import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

import java.awt.Image;

import java.awt.LayoutManager;

public class ZeichenPanel extends JPanel  {
    
    Fenster fenster;
    
    Image[] bilderFiguren;
    Image[] bilderHintergrund;
    
    int tileBreite;
    int tileHoehe;

    int zeilenzahl;
    int spaltenzahl;

    
    public ZeichenPanel(LayoutManager layout, boolean isDoubleBuffered) {
        super(layout, isDoubleBuffered);

        MouseConnection mouse = new MouseConnection(this);
        this.addMouseListener(mouse);
        this.addMouseMotionListener(mouse);

    }

    public void bilderInitialisieren(int tileBreite, int tileHoehe) {
        
        this.tileBreite = tileBreite; //von MouseConnection benutzt
        this.tileHoehe = tileHoehe; //von MouseConnection benutzt
        
        zeilenzahl = this.getHeight()/tileHoehe;
        spaltenzahl = this.getWidth()/tileBreite;
        bilderFiguren = new Image[spaltenzahl*zeilenzahl];
        bilderHintergrund = new Image[spaltenzahl*zeilenzahl];

        for (int i=0; i<spaltenzahl*zeilenzahl; i++) {
            bilderFiguren[i] = GraphicsHelper.createImage("leer64x64.png"); 
            bilderHintergrund[i] = GraphicsHelper.createImage("leer64x64.png"); 
        }            
    }

    /**
     * Diese Methode wird vom Betriebssystem aufgerufen, wenn es es fuer noeitg haelt.
     * Sie zeichnet alle Objekte auf das JPanel. Vorherige Elemente werden nicht geloescht,
     * es sei denn, man schreibt sich z.B. eine Methode dafuer.
     * 
     * Diese Methode soll schnell ausgefuehrt werden koennen, also keine grossen Berechnungen
     * darin anstellen!
     */
    public void paintComponent(Graphics g) {
//         leinwandLoeschen(g);
           g.drawImage(GraphicsHelper.createImage("Material/spielfeld_hintergrund.png"),37,37,null);
        for (int x=0; x<spaltenzahl; x++) {
            for (int y=0; y<zeilenzahl; y++) {
                g.drawImage(bilderHintergrund[y*spaltenzahl+x],x*tileBreite,y*tileHoehe,null) ;
                g.drawImage(bilderFiguren[y*spaltenzahl+x],x*tileBreite,y*tileHoehe,null) ;
            }
        }
    }

    /**
     * Hilfsmethode zum Loeschen einer Zeichenflaeche.
     */
    void leinwandLoeschen(Graphics g) {
//         g.setColor(getBackground());
       g.setColor(Color.pink);
//          g.setColor(g.getColor());
        g.clearRect(0, 0, getWidth(), getHeight());
//         g.setColor(Color.pink);
//         repaint();
    }

    void setzeBildAnPosition(int x, int y, String bildname) {
        bilderHintergrund [y*spaltenzahl+x] = GraphicsHelper.createImage(bildname);
    }
    
    void setzeFigurAnPosition(int x, int y, String bildname) {
        bilderFiguren[y*spaltenzahl+x] = GraphicsHelper.createImage(bildname);
        repaint();
    }
    
    void fensterSetzen(Fenster f) {
        this.fenster = f;
    }
    


 
}